home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Database / CardFile_Source / CardFile_Advanced / CardFileController.m < prev    next >
Text File  |  1993-11-23  |  3KB  |  147 lines

  1. /*
  2.  *
  3.  * CardFileController.m
  4.  *
  5.  *    You may freely copy, distribute and reuse the code in this example.
  6.  *    NeXT disclaims any warranty of any kind, expressed or implied, as to
  7.  *    its fitness for any particular use.
  8.  *
  9.  */
  10.  
  11. #import "CardFileController.h"
  12.  
  13. @implementation CardFileController
  14.  
  15. - init
  16. {
  17.     [super init];
  18.     customerList = [[List alloc] init];
  19.     return self;
  20. }
  21.  
  22. - awakeFromNib
  23. {
  24.     [self addCustomer:self];
  25.     [[nameField window] makeKeyAndOrderFront:self];
  26.     return self;
  27. }
  28.  
  29. - free
  30. {
  31.     [customerList freeObjects];
  32.     [customerList free];
  33.     return [super free];
  34. }
  35.  
  36. - addCustomer:sender
  37. {
  38.     currentCustomer = [[Customer alloc] init];
  39.     [customerList addObject:currentCustomer];
  40.     [customerBox setTitle:"Enter Customer Data"];
  41.     [self updateInspector];
  42.     return self;
  43. }
  44.  
  45. - deleteCustomer:sender
  46. {
  47.     // XXX - probably should confirm this operation with the User
  48.     if (!currentCustomer) return self; // XXX - better to disable the menu item
  49.     
  50.     [customerList removeObject:currentCustomer];
  51.     [currentCustomer free];
  52.     [self firstCustomer:self];
  53.     return self;
  54. }
  55.  
  56. - firstCustomer:sender
  57. {
  58.     currentCustomer = [customerList objectAt:0];
  59.     if (!currentCustomer) {
  60.         [self clearInspector];
  61.         [[customerBox setTitle:"No Customers"] display]; 
  62.         return self;
  63.     }
  64.     [customerBox setTitle:"First Customer"];
  65.     [self updateInspector];
  66.     return self;
  67. }
  68.  
  69. - nextCustomer:sender
  70. {
  71.     id  nextCustomer;
  72.     int customerIndex = [customerList indexOf:currentCustomer];
  73.     
  74.     if (customerIndex == NX_NOT_IN_LIST)
  75.         return self;    // should warn user entry not found in list
  76.  
  77.     nextCustomer = [customerList objectAt:(customerIndex + 1)];
  78.     if (!nextCustomer) {
  79.         [[customerBox setTitle:"Last Customer"] display];
  80.         NXBeep();
  81.         return self;    // XXX - better to disable the Next button!
  82.     }
  83.     currentCustomer = nextCustomer;
  84.     [customerBox setTitle:"Current Customer"];
  85.     [self updateInspector];
  86.     return self;
  87. }
  88.  
  89. - prevCustomer:sender
  90. {
  91.     id  prevCustomer;
  92.     int customerIndex = [customerList indexOf:currentCustomer];
  93.     
  94.     if (customerIndex == NX_NOT_IN_LIST)
  95.         return self;    // should warn user entry on found in list
  96.     if (customerIndex == 0) {
  97.         [[customerBox setTitle:"First Customer"] display];
  98.         NXBeep();
  99.         return self;    // XXX - better to disable the Prev button!
  100.     }
  101.     
  102.     prevCustomer = [customerList objectAt:(customerIndex - 1)];
  103.     if (!prevCustomer) 
  104.         return self;    // should also alert user that this is last
  105.     currentCustomer = prevCustomer;
  106.     [customerBox setTitle:"Current Customer"];
  107.     [self updateInspector];
  108.     return self;
  109. }
  110.  
  111. - nameChanged:sender
  112. {
  113.     [currentCustomer setCustomerName:[sender stringValue]];
  114.     return self;
  115. }
  116.  
  117. - uidChanged:sender
  118. {
  119.     [currentCustomer setCustomerUid:[sender intValue]];
  120.     return self;
  121. }
  122.  
  123. - updateInspector
  124. {
  125.     if (!currentCustomer) return self;
  126.     
  127.     [nameField setStringValue:[currentCustomer customerName]];
  128.     [uidField setIntValue:[currentCustomer customerUid]];
  129.     [listCountField setIntValue:[customerList count]];
  130.     [nameField selectText:self];
  131.     [customerBox display];
  132.     return self;
  133. }
  134.  
  135. - clearInspector
  136. {
  137.     [nameField setStringValue: NULL];
  138.     [uidField setStringValue: NULL];
  139.     [listCountField setStringValue: NULL];
  140.     
  141.     [nameField selectText:self];
  142.     return self;
  143. }
  144.  
  145.  
  146. @end
  147.